Ben mutlak bir acemiyim, iki haftadır kendi kendime çalışıyorum ve bir ay içinde çıkacak bir eğitim kampına hazırlanıyorum. Becerilerimi geliştirmek ve "bir geliştirici gibi düşünmeyi öğrenmek" amacıyla, gerçek dünyadaki bir sorunu çözmeye çalışan bir proje üstlendim. Karım, müşterileri için fatura oluşturmasını gerektiren bir iş yürütüyor. Her seferinde manuel olarak yazmak yerine hızlı bir şekilde özel faturalar oluşturmasını sağlayan web tabanlı bir uygulama oluşturmak için HTML ve JavaScript kullanmaya çalışıyorum. Mevcut sürümde, bir komut istemi ondan bir numara ister. Bu sayı, HTML'de eşit sayıda üç sütunlu satır oluşturur. Bu, faturayı tam olarak ihtiyaç duyduğu alan sayısıyla özelleştirmesine olanak tanır. Sütun 1, ürün adını içerir. Aynı satırda, sütun 2 birim sayısını içerirken, sütun 3, birim sayıyla çarpılan taban fiyatı olan ürünün toplam maliyetini içerir. Bu hesaplamanın bir düğmeye tıklandığında gerçekleşmesini istiyorum. Ama sıkıştım. Matematiği yapabilmek için her satır ve sütundan tamsayıları alıp bunları bir işleve aktarabilmem gerekiyor. Ancak her satır ve sütun otomatik olarak oluşturulduğundan, benzersiz nitelikleri yoktur ve bu nedenle tanımlanamazlar. Her sütunda matematik işlemi yapabilirim, ancak her satırda değil. Çok yeni olduğum için, Codecademy'yi yalnızca birkaç giriş dersinden ve bazı YouTube videolarından öğrendiğim için, projeye tamamen yanlış yaklaşıp yaklaşmadığımı veya kaçırdığım bir numara olup olmadığını nasıl değerlendireceğimi bilmiyorum henüz öğrenilmemiş bir şey varsa. Biraz uzmanlığa sahip biri beni doğru yönde dürtebilirse, gerçekten minnettar olurum! Tüm kodu bu gönderiye ekledim. Korkunç bir karmaşa ise özür dilerim. Bana karşı sakin ol, ben acemiyim! const invDate = Tarih (); var field = " " + " " + "
"; document.getElementById ('newInvoice'). onclick = function () { let invoicedName = bilgi istemi ('Bu fatura kime verildi?', 'Bir ad girin'); let productFields = Number (bilgi istemi ('Bu faturada kaç ürün adı var?', 'Lütfen bir numara girin')); let alanlar = '' dynHtml = '' eğer (invoicedName! = null && productFields! = null) { for (let i = 1; i <= productFields; i ++) { alanlar + = alan}; } else {alert ('Lütfen geçerli girişler girin.'); }; dynHtml = ""; document.write (dynHtml); document.getElementById ('hesapla'). onclick = function getQtyFields () { let qtyInputs = document.getElementsByName ('qty'), resultQty = 0; for (let j = 0; j ![]()
" + "FATURA
" + "için hazırlandı: " + faturaAdı + "," + "
" + invDate + "
" + alanlar + "
" + "
2020-12-15 08:13:31
Dediğiniz gibi, asıl sorununuz kendi satırındaki her giriş alanına kendi benzersiz tanımlayıcısını vermenin bir yolunu bulmaktır. Bu şekilde her satır için fiyatı hesaplayabilir ve fiyat alanına ekleyebilirsiniz. İlk önce alanlarla başlamalısınız: var field = " " + " " + "
"; document.getElementById ('newInvoice'). onclick = function () { ... for (let i = 1; i <= productFields; i ++) { alanlar + = alan}; ... }; Her grubun kendi tanımlayıcısına ihtiyacı vardır. Bu şekilde, daha sonra alt toplam fiyatı hesaplamak için her satırdaki her girdiye başvurabilirsiniz. Sınıf niteliği, daha sonra bunlara başvurmak için birden çok öğeye atayabileceğiniz bir şeydir. Bu sınıf, başka herhangi bir satır için sınıfla çelişmediği sürece herhangi bir şey olabilir. Her döngüde değiştiği için, döngünün i değerini tanımlayıcınız olarak kullanabilirsiniz. for (let i = 1; i <= productFields; i ++) { var field = " " + " " + "
"; alanlar + = alan }; Bu, her satırdaki her alana sınıf satırı - {i} ekleyecektir. Daha da iyisi, bunu kendi işlevine göre yeniden düzenleyebilirsiniz. function generateFields (i) { return " " + " " + "
"; } for (let i = 1; i <= productFields; i ++) { alanlar + = generateFields (i); }; Aşağıdaki html'ye benzer bir şey elde edersiniz
Şimdi hesaplama fonksiyonunuzda, bu satırlara başvurabilir ve fiyatlarını hesaplayabilirsiniz. Burada 'öğe' giriş alanlarının üzerinden geçebilirsiniz. document.getElementById ('hesapla'). onclick = function getQtyFields () { let itemInputs = document.getElementsByName ('öğe') for (let i = 0; i) kullanarak, elemanlarından herhangi birini adına göre seçebilirsiniz. for (let i = 0; i